This invention relates to the field of software development, specifically the development of software by programmers at diverse locations and with diverse objectives.
Conventional software development involves individual programmers or tightly coupled teams. Members of the team are generally at the same site. A single common employer or funding source defines the objectives of the development. The tight coupling fosters a close focus of the team's efforts on the defined objective: style and standards, version control, documentation, functionality, debugging, confidentiality, and product release and support can all be woven tightly into the team environment. Such a tight coupling, however, can limit the development to just the resources available to the team (either their own efforts, or efforts of others that the team can afford to purchase), limiting opportunities to leverage the development efforts of others. Leveraging other development can be important to the success of software development in small company, research, and academic environments.
Placing software in the public domain can allow others to leverage its development. Once in the public domain, however, the original developer has no way to manage or benefit from the software, so there is little incentive to place software in the public domain.
Open source software models offer an alternative to public domain, allowing widespread use but ensuring that subsequent developers also make improvements available as open source. In an open source model, software can be licensed for free, with source code available. Consequently, subsequent developers can leverage software available as open source. A typical open source license has provisions requiring that further development of the software must also be made available as open source. A developer, by making the software available as open source, can benefit from later development by others that improves or extends the original software. The wide open nature of open source licensing is well-suited for research and academic settings, but can make version management and commercialization problematic. The open source premise that software be freely available prevents commercial companies from profiting, reducing the likelihood that commercial software will be available as open source or will contribute to improvement of open source software. Various business models have been tried in conjunction with open source software (see, e.g., the various companies offering Linux products and services) but with uncertain success.
There is a need for a distributed software development tool that allows widespread access to software developed by others, without sacrificing the profit possibilities needed to justify commercial development.